/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.client.om.impl;

import java.util.Date;
import java.util.List;

import fr.generali.accueilclient.client.om.IAdresse;
import fr.generali.accueilclient.client.om.ICharte;
import fr.generali.accueilclient.client.om.ICommunication;
import fr.generali.accueilclient.client.om.ICoordonneeBancaire;
import fr.generali.accueilclient.client.om.IDonneeMarketing;
import fr.generali.accueilclient.client.om.IEmail;
import fr.generali.accueilclient.client.om.IEnvironnement;
import fr.generali.accueilclient.client.om.IIndicateursDemat;
import fr.generali.accueilclient.client.om.IPersonne;
import fr.generali.accueilclient.client.om.IPieceIdentite;
import fr.generali.accueilclient.client.om.ISiteInternet;
import fr.generali.accueilclient.client.om.ITelephone;
import fr.generali.accueilclient.opt.recherchemulticriteres.om.IDossierRechMultiCriteres;
import fr.generali.accueilclient.resume.contrat.om.IResumeContrat;
import fr.generali.accueilclient.resume.sinistre.om.IResumeSinistre;
import fr.generali.accueilclient.resume.suspens.om.IResumeSuspens;
import fr.generali.accueilclient.tigre.consultationsolde.om.IEnteteConsultationSolde;

/**
 * Implémentation d'un {@link IPersonne}
 * 
 * @author selrhazala
 */
public abstract class AbstractPersonne extends AbstractNaturePersonne implements IPersonne {

    /**
     * le numéro de client
     */
    private String numeroClient;

    /**
     * le numéro de client
     */
    private String numeroClientAgent;

    /**
     * le point de vente
     */
    private String pointDeVente;

    /**
     * le chargé de clientèle
     */
    private String chargeClientele;

    /**
     * le titre du courrier
     */
    private String titreCourrier;

    /**
     * l'idendifiant client fue
     */
    private String idClientFue;

    /**
     * la date de création
     */
    private Date dateDebut;

    /**
     * le type du client
     */
    private String typeClient;

    /**
     * le code intermédiaire
     */
    private String codeIntermediaire;

    /**
     * le libellé intermédiaire
     */
    private String libelleIntermediaire;

    /**
     * l'adresse principale
     */
    private IAdresse adressePrincipale;

    /**
     * La liste des adresses
     */
    private List<IAdresse> listeAdresse;

    /**
     * la liste des téléphones
     */
    private List<ITelephone> listeTelephone;

    /**
     * la liste des emails
     */
    private List<IEmail> listeEmail;

    /**
     * la liste des Site Internet
     */
    private List<ISiteInternet> listeSiteInternet;

    /**
     * la liste des pièces d'identités
     */
    private List<IPieceIdentite> listePieceIdentite;

    /**
     * L'email
     */
    private IEmail email;

    /**
     * Les informations de démarchage
     */
    private ICommunication communication;

    /**
     * Les coordonnées bancaires
     */
    private ICoordonneeBancaire coordonneeBancaire;

    /**
     * L'environnement
     */
    private IEnvironnement environnement;

    /**
     * La liste des rib
     */
    private List<ICoordonneeBancaire> listeCoordonneesBancaires;

    /**
     * La charte d'accompagnement
     */
    private ICharte charte;

    /**
     * L'espace client
     */
    private String compteEspaceClient;

    /**
     * le secteur d'activité
     */
    private String secteurActivite;

    /**
     * la précision de l'activité
     */
    private String precisionActivite;

    /**
     * la date de début d'activité
     */
    private Date debutActivite;

    /**
     * la date de fin d'activité
     */
    private Date finActivite;

    /**
     * Le nombre de residences
     */
    private String nbResidences;

    /**
     * le nombre de véhicules
     */
    private String nbVehicules;

    /**
     * Les contrats
     */
    private List<IResumeContrat> contrats = null;

    /**
     * Les sinistres
     */
    private List<IResumeSinistre> sinistres = null;

    /**
     * Les suspens
     */
    private IResumeSuspens suspens = null;

    /**
     * Les opportunites
     */
    private List<IDossierRechMultiCriteres> opportunites = null;

    /**
     * Consultation solde
     */
    private IEnteteConsultationSolde consultationSolde = null;

    /**
     * Indicateur de chargement complet du client suite à un appel au P42 ou P44
     */
    private boolean fullLoaded = false;

    /**
     * Indicateur de chargement complet du client suite à un appel au P41
     */
    private boolean partialLoaded = false;

    /**
     * Indicateur client very important personne
     */
    private boolean clientVIP = false;

    /**
     * Indicateur client actif (true) ou désactivé (false)
     */
    private boolean actif = false;

    /**
     * Indicateur que le client a un espace client
     */
    private boolean espaceClient = false;

    /**
     * l'origine du client
     */
    private String origineClient;

    /**
     * le média d'origine
     */
    private String mediaOrigine;

    /**
     * le type de procédure
     */
    private String typeProcedure;

    /**
     * la date du jugement
     */
    private Date dateJugement;

    /**
     * pollicitable
     */
    private boolean pollicitable = false;

    /**
     * assurableEnSante
     */
    private boolean assurableEnSante = false;

    /**
     * la date de création
     */
    private Date dateCreation;

    /**
     * la date de dernière mise à jour
     */
    private Date dateDernierMaj;

    /**
     * la date de passage client
     */
    private Date datePassageClient;

    /**
     * la date de passage client
     */
    private Date dateFinClient;

    /**
     * Indicateurs demat
     */
    private IIndicateursDemat indicateursDemat;
    
    /**
     * Le profil marketing
     */
    private IDonneeMarketing donneeMarketing;
    

    public String getNumeroClient() {
        return numeroClient;
    }

    public void setNumeroClient(String numeroClient) {
        this.numeroClient = numeroClient;
    }

    public String getNumeroClientAgent() {
        return numeroClientAgent;
    }

    public void setNumeroClientAgent(String numeroClientAgent) {
        this.numeroClientAgent = numeroClientAgent;
    }

    /**
     * @return the pointDeVente
     */
    public String getPointDeVente() {
        return pointDeVente;
    }

    /**
     * @param pointDeVente the pointDeVente to set
     */
    public void setPointDeVente(String pointDeVente) {
        this.pointDeVente = pointDeVente;
    }

    /**
     * @return the chargeClientele
     */
    public String getChargeClientele() {
        return chargeClientele;
    }

    /**
     * @param chargeClientele the chargeClientele to set
     */
    public void setChargeClientele(String chargeClientele) {
        this.chargeClientele = chargeClientele;
    }

    public Date getDateDebut() {
        return dateDebut;
    }

    public void setDateDebut(Date dateDebut) {
        this.dateDebut = dateDebut;
    }

    public String getTypeClient() {
        return typeClient;
    }

    public void setTypeClient(String typeClient) {
        this.typeClient = typeClient;
    }

    public String getCodeIntermediaire() {
        return codeIntermediaire;
    }

    public void setCodeIntermediaire(String codeIntermediaire) {
        this.codeIntermediaire = codeIntermediaire;
    }

    public String getLibelleIntermediaire() {
        return libelleIntermediaire;
    }

    public void setLibelleIntermediaire(String libelleIntermediaire) {
        this.libelleIntermediaire = libelleIntermediaire;
    }

    public IAdresse getAdressePrincipale() {
        return adressePrincipale;
    }

    public void setAdressePrincipale(IAdresse adressePrincipale) {
        this.adressePrincipale = adressePrincipale;
    }

    public List<IAdresse> getListeAdresse() {
        return listeAdresse;
    }

    public void setListeAdresse(List<IAdresse> listeAdresse) {
        this.listeAdresse = listeAdresse;
    }

    public List<ITelephone> getListeTelephone() {
        return listeTelephone;
    }

    public void setListeTelephone(List<ITelephone> listeTelephone) {
        this.listeTelephone = listeTelephone;
    }

    public List<IEmail> getListeEmail() {
        return listeEmail;
    }

    public void setListeEmail(List<IEmail> listeEmail) {
        this.listeEmail = listeEmail;
    }

    public List<ISiteInternet> getListeSiteInternet() {
        return listeSiteInternet;
    }

    public void setListeSiteInternet(List<ISiteInternet> listeSiteInternet) {
        this.listeSiteInternet = listeSiteInternet;
    }

    public List<IPieceIdentite> getListePieceIdentite() {
        return listePieceIdentite;
    }

    public void setListePieceIdentite(List<IPieceIdentite> listePieceIdentite) {
        this.listePieceIdentite = listePieceIdentite;
    }

    public IEmail getEmail() {
        return email;
    }

    public void setEmail(IEmail email) {
        this.email = email;
    }

    public ICommunication getCommunication() {
        return communication;
    }

    public void setCommunication(ICommunication communication) {
        this.communication = communication;
    }

    public ICoordonneeBancaire getCoordonneeBancaire() {
        return coordonneeBancaire;
    }

    public void setCoordonneeBancaire(ICoordonneeBancaire coordonneeBancaire) {
        this.coordonneeBancaire = coordonneeBancaire;
    }

    public List<ICoordonneeBancaire> getListeCoordonneesBancaires() {
        return listeCoordonneesBancaires;
    }

    public void setListeCoordonneesBancaires(List<ICoordonneeBancaire> listeCoordonneesBancaires) {
        this.listeCoordonneesBancaires = listeCoordonneesBancaires;
    }

    public IEnvironnement getEnvironnement() {
        return environnement;
    }

    public void setEnvironnement(IEnvironnement environnement) {
        this.environnement = environnement;
    }

    public ICharte getCharte() {
        return charte;
    }

    public void setCharte(ICharte charte) {
        this.charte = charte;
    }

    public String getCompteEspaceClient() {
        return compteEspaceClient;
    }

    public void setCompteEspaceClient(String compteEspaceClient) {
        this.compteEspaceClient = compteEspaceClient;
    }

    public List<IResumeContrat> getContrats() {
        return contrats;
    }

    public void setContrats(List<IResumeContrat> contrats) {
        this.contrats = contrats;
    }

    public List<IResumeSinistre> getSinistres() {
        return sinistres;
    }

    public void setSinistres(List<IResumeSinistre> sinistres) {
        this.sinistres = sinistres;
    }

    public IResumeSuspens getSuspens() {
        return suspens;
    }

    public void setSuspens(IResumeSuspens suspens) {
        this.suspens = suspens;
    }

    public List<IDossierRechMultiCriteres> getOpportunites() {
        return opportunites;
    }

    public void setOpportunites(List<IDossierRechMultiCriteres> opportunites) {
        this.opportunites = opportunites;
    }

    public IEnteteConsultationSolde getConsultationSolde() {
        return consultationSolde;
    }

    public void setConsultationSolde(IEnteteConsultationSolde consultationSolde) {
        this.consultationSolde = consultationSolde;
    }

    public boolean isFullLoaded() {
        return fullLoaded;
    }

    public void setFullLoaded(boolean fullLoaded) {
        this.fullLoaded = fullLoaded;
    }

    public boolean isPartialLoaded() {
        return partialLoaded;
    }

    public void setPartialLoaded(boolean partialLoaded) {
        this.partialLoaded = partialLoaded;
    }

    public String getTitreCourrier() {
        return titreCourrier;
    }

    public void setTitreCourrier(String titreCourrier) {
        this.titreCourrier = titreCourrier;
    }

    public String getSecteurActivite() {
        return secteurActivite;
    }

    public void setSecteurActivite(String secteurActivite) {
        this.secteurActivite = secteurActivite;
    }

    public String getPrecisionActivite() {
        return precisionActivite;
    }

    public void setPrecisionActivite(String precisionActivite) {
        this.precisionActivite = precisionActivite;
    }

    public Date getDebutActivite() {
        return debutActivite;
    }

    public void setDebutActivite(Date debutActivite) {
        this.debutActivite = debutActivite;
    }

    public Date getFinActivite() {
        return finActivite;
    }

    public void setFinActivite(Date finActivite) {
        this.finActivite = finActivite;
    }

    public String getNbResidences() {
        return nbResidences;
    }

    public void setNbResidences(String nbResidences) {
        this.nbResidences = nbResidences;
    }

    public String getNbVehicules() {
        return nbVehicules;
    }

    public void setNbVehicules(String nbVehicules) {
        this.nbVehicules = nbVehicules;
    }

    public String getIdClientFue() {
        return idClientFue;
    }

    public void setIdClientFue(String idClientFue) {
        this.idClientFue = idClientFue;
    }

    public boolean isClientVIP() {
        return clientVIP;
    }

    public void setClientVIP(boolean clientVIP) {
        this.clientVIP = clientVIP;
    }

    public String getOrigineClient() {
        return origineClient;
    }

    public void setOrigineClient(String origineClient) {
        this.origineClient = origineClient;
    }

    public String getMediaOrigine() {
        return mediaOrigine;
    }

    public void setMediaOrigine(String mediaOrigine) {
        this.mediaOrigine = mediaOrigine;
    }

    public String getTypeProcedure() {
        return typeProcedure;
    }

    public void setTypeProcedure(String typeProcedure) {
        this.typeProcedure = typeProcedure;
    }

    public Date getDateJugement() {
        return dateJugement;
    }

    public void setDateJugement(Date dateJugement) {
        this.dateJugement = dateJugement;
    }

    public boolean isPollicitable() {
        return pollicitable;
    }

    public void setPollicitable(boolean pollicitable) {
        this.pollicitable = pollicitable;
    }

    public boolean isAssurableEnSante() {
        return assurableEnSante;
    }

    public void setAssurableEnSante(boolean assurableEnSante) {
        this.assurableEnSante = assurableEnSante;
    }

    public boolean isActif() {
        return actif;
    }

    public void setActif(boolean actif) {
        this.actif = actif;
    }

    /**
     * @return the dateCreation
     */
    public Date getDateCreation() {
        return dateCreation;
    }

    /**
     * @param dateCreation the dateCreation to set
     */
    public void setDateCreation(Date dateCreation) {
        this.dateCreation = dateCreation;
    }

    /**
     * @return the dateDernierMaj
     */
    public Date getDateDernierMaj() {
        return dateDernierMaj;
    }

    /**
     * @param dateDernierMaj the dateDernierMaj to set
     */
    public void setDateDernierMaj(Date dateDernierMaj) {
        this.dateDernierMaj = dateDernierMaj;
    }

    /**
     * @return the datePassageClient
     */
    public Date getDatePassageClient() {
        return datePassageClient;
    }

    /**
     * @param datePassageClient the datePassageClient to set
     */
    public void setDatePassageClient(Date datePassageClient) {
        this.datePassageClient = datePassageClient;
    }

    /**
     * @return the dateFinClient
     */
    public Date getDateFinClient() {
        return dateFinClient;
    }

    /**
     * @param dateFinClient the dateFinClient to set
     */
    public void setDateFinClient(Date dateFinClient) {
        this.dateFinClient = dateFinClient;
    }

    /**
     * {@inheritDoc}
     */
    public boolean isAncienClient() {
        return (this.typeClient.equalsIgnoreCase("AC")) ? true : false;
    }

    /**
     * @return the espaceClient
     */
    public boolean isEspaceClient() {
        return espaceClient;
    }

    /**
     * @param espaceClient the espaceClient to set
     */
    public void setEspaceClient(boolean espaceClient) {
        this.espaceClient = espaceClient;
    }

    /**
     * @return the indicateursDemat
     */
    public IIndicateursDemat getIndicateursDemat() {
        return indicateursDemat;
    }

    /**
     * @param indicateursDemat the indicateursDemat to set
     */
    public void setIndicateursDemat(IIndicateursDemat indicateursDemat) {
        this.indicateursDemat = indicateursDemat;
    }
    
    /**
     * @return the donneeMarketing
     */
    public IDonneeMarketing getDonneeMarketing() {
        return donneeMarketing;
    }

    /**
     * @param donneeMarketing the donneeMarketing to set
     */
    public void setDonneeMarketing(IDonneeMarketing donneeMarketing) {
        this.donneeMarketing = donneeMarketing;
    }

}
